﻿#######################################
#                                     #
# 	Création d'un modèle de quotas 	  #
#                                     #
#######################################

# Récupération d'un modèle de quota pour les collections de sites Projet
# $quota = [Microsoft.SharePoint.Administration.SPWebService]::ContentService.QuotaTemplates | where { $_.Name -eq "PIB Espace collaboratif Projet" }

# Application du quota sur une collection de sites
# New-SPSite -QuotaTemplate $quota

function Create-QuotaTemplate
{
	param
	(
		[Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=0)]
		[String]$Name,
		[Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=1)]
		[Int64]$StorageMaximumLevel,
		[Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=2)]
		[Int64]$StorageWarningLevel,
		[Parameter(Mandatory=$false, ValueFromPipeline=$true, Position=3)]
		[System.Double]$UserCodeMaximumLevel,
		[Parameter(Mandatory=$false, ValueFromPipeline=$true, Position=4)]
		[System.Double]$UserCodeWarningLevel
	)
	process
	{
		if (!$Name -or !$StorageMaximumLevel -or !$StorageWarningLevel)
		{
			write-host "Les paramètres suivants doivent être précisés : " -foregroundcolor Red
			write-host "	- Name : Représente le nom du modèle de quota pour les collections de sites." -foregroundcolor Red
			write-host "	- StorageMaximumLevel : Représente la valeur maximale de stockage de données." -foregroundcolor Red
			write-host "	- StorageWarningLevel : Représente la valeur à partir de laquelle une alerte est émise." -foregroundcolor Red
			return;
		}

		write-host ""
		write-host "Ajout d'un modèle de quota pour les collections de sites"

		try 
		{
			# Instantiate an instance of an SPQuotaTemplate class #
			$Quota = New-Object Microsoft.SharePoint.Administration.SPQuotaTemplate

			# Set the Properties #
			write-host "	+ Propriétés du modèle :"
			write-host "		> Nom : " $Name
			write-host "		> Valeur de stockage max. : " $StorageMaximumLevel
			write-host "		> Seuil d'alerte : " $StorageWarningLevel
			
			$Quota.Name = $Name
			$Quota.StorageMaximumLevel = $StorageMaximumLevel
			$Quota.StorageWarningLevel = $StorageWarningLevel
			$Quota.UserCodeMaximumLevel = $UserCodeMaximumLevel
			$Quota.UserCodeWarningLevel = $UserCodeWarningLevel

			# Get an Instance of the SPWebService Class #
			Write-Verbose "Getting an instance of an SPWebService class"
			$Service = [Microsoft.SharePoint.Administration.SPWebService]::ContentService

			# Use the Add() method to add the quota template to the collection #
			Write-Verbose "Adding the $($Name) Quota Template to the Quota Templates Collection"
			$Service.QuotaTemplates.Add($Quota)

			# Call the Update() method to commit the changes #
			$Service.Update()
			
			write-host "Modèle de quota ajouté avec succès." -f green
		}
		catch [Exception]
		{
			write-host "ERREUR : " $_
		}
	}
}


export-modulemember -function Create-QuotaTemplate